﻿using System.Diagnostics;
using System;

namespace Core.Helpers.CommonHelpers
{
    /// <summary>
    /// Nesneler ile ziplenmiş byte dizileri arasında dönüşümleri yapar
    /// </summary>
    public class Converter
    {
        /// <summary>
        /// Herhangi bir nesneyi byte ziplenmiş byte dizisine çevirir
        /// </summary>
        /// <param name="obj">ziplenecek nesne</param>
        /// <returns>ziplenmiş byte dizisi</returns>
        public static byte[] ObjectToCommpressedByteArray(object obj)
        {
            byte[] b = SilverlightSerializer.Serialize(obj);
            byte[] retval = Compressor.compress(b);
#if DEBUG
            Debug.WriteLine(String.Format("Orjinal Nesne Boyu   :{0} \nZiplenmiş Nesne Boyu :{1}  ", b.Length, retval.Length));
#endif
            return retval;
        }


        /// <summary>
        /// Ziplenmiş byte dizisini nesneye çevirir
        /// </summary>
        /// <param name="bytes">Ziplenmiş byte dizisi</param>
        /// <returns>nesne</returns>
        public static object CompressedByteArrayToObject(byte[] bytes)
        {
            byte[] b = Compressor.decompress(bytes);
            object retval = SilverlightSerializer.Deserialize(b);
            return retval;
        }

    }
}
